<?php
vim test.sh

#!/bin/bash
MY_NAME="pajace2001"
echo "My name is $MY_NAME"


chmod +x  test.sh

./test.sh

# 如果判斷式為真，就執行 do something 1, 為假往下執行看 判斷式2 是否為真
# 為真就執行 do something 2, 否則就執行 do something 3
if [ 判斷式 ]; then
  do something 1
elif [ 判斷式2 ]; then
  do something 2
else
  do something 3
fi


#!/bin/bash

echo -n "你好！請輸入你的年齡："
read MY_AGE

if [ $MY_AGE -eq 18 ]; then
	echo "恭喜你，你剛滿18歲！"
elif [ $MY_AGE -lt 18 ]; then
    echo "你還未成年喔！"
else
    echo "你已經成年了"
fi

echo "你輸入的年齡是 $MY_AGE 歲"








#!/bin/bash

echo -n "你好！請輸入一個單字："
read MY_WORD

if [ "$MY_WORD" == "Pajace2001" ]; then
        echo "你輸入的不是 Pajace2001 "
elif [ "$MY_WORD" == "Pajace9527" ]; then
        echo "你輸入的是 Pajace9527"
elif [[ $MY_WORD == Pajace* ]]; then
        echo "你輸入的是 Pajace 開頭的字 - $MY_WORD "
elif [[ $MY_WORD =~ Pajace ]]; then
        echo "你輸入的是含有 Pajace 字 - $MY_WORD "
else
        echo "你輸入的是 $MY_WORD "
fi 




#!/bin/bash

echo -n "請問你要幾個[妹]:"
read MA

INDEX=1
# 當條件成立，就會不斷執行（le表示小於或等於）
while [ $INDEX -le $MA ]
do
		# 輸出 妹
        echo -n "妹 "
		# INDEX 的值會加1
        (( INDEX++ ))
done
echo ""

echo "已經給你 $MA 個妹囉 了！"




技術問答
技術文章
iT 徵才
iT 活動
 Tag
 聊天室
登入/註冊
DAY
11
3
快快樂樂學會讓電腦幫我做事系列 第 8 篇
[Shell Script] Day11-迴圈 while 的三個範例
程式設計 鐵人賽

pajace2001
2013-10-02 22:24:58 22870 瀏覽
在介紹完 while 迴圈的三個樣子之後，緊接著當然是對這三個樣子作範例囉！這次的範例應該會有趣一些~
while] 迴圈能有什麼樣的應用呢？其實應用非常多，而且很常用到。

比如說，我想執行一個測試程式，我希望他跑個10小時，那該怎麼做？
當然就是用 while 啦！

比如說我想要編輯一份文件，在文件中若出現關鍵字，我就需要根據那關鍵字查詢對應表，在接著將查到的結果插入該文件關鍵字那行之下，也是可以用 while 來達成。

以下就根據昨天介紹的三個 while樣式來寫三個例子吧。

第一種：在條件成立時，就會不斷執行迴圈內容

#!/bin/bash

echo -n "請問你要幾個[妹]:"
read MA

INDEX=1
# 當條件成立，就會不斷執行（le表示小於或等於）
while [ $INDEX -le $MA ]
do
		# 輸出 妹
        echo -n "妹 "
		# INDEX 的值會加1
        (( INDEX++ ))
done
echo ""

echo "已經給你 $MA 個妹囉 了！"
 
 
 
 
 
 
 

#!/bin/bash

echo "按下 Ctrl + C 中斷…"

LENGTH=0
while :
do
        echo -ne "\r["
        sleep 0.2
        while [ $LENGTH -le 10 ]
        do
                sleep 0.1
                echo -n ">"
                (( LENGTH++ ))
        done
        LENGTH=0
        echo -en "\r                          "
done





#!/bin/bash

echo -n "請輸入要讀取的文字檔名稱："
read FILE_NAME

INDEX=1
while read line
do
        echo "$INDEX: $line"
        (( INDEX++ ))
done <$FILE_NAME







#!/bin/bash

QUIT="quit"
USER_INPUT="a"
until [ "$QUIT" = "$USER_INPUT" ]; do
    echo -n "請輸入文字（輸入quit離開）： "
    read USER_INPUT
    echo "你輸入的是： $USER_INPUT"
    echo ""
done






#!/bin/bash

IsQuit="FALSE"
Week=1
Hours=1
Endurance=1
until [ "$IsQuit" = "YES" ]
do
    # 若是週末則印出休假訊息
    if [ $Week -eq 6 ] || [ $Week -eq 7 ]; then
        WorkingDay="FALSE"
        echo "YA! 星期 $Week 休假 ..."
    fi

    # while 迴圈持續工作八小時
    while [ $Hours -le 8 ]  && [ $Week -lt 6 ]
    do
        echo -ne "星期 $Week, 努力工作 $Hours...\r"
        (( Hours++ ))
        sleep 0.2
    done

    # 忍受度 +1
    (( Endurance++ ))

    # 工作時數歸零
    Hours=0

    # 又過一天
    (( Week++ ))

    # 過了七天，問一是否要離職
    if [ $Week -gt 7 ]; then
        Week=1
        echo -ne "工作一週後，請問你有想辭職嗎？（輸入 YES 或按 ENTER 繼續）: "
        read IsQuit
    fi
    sleep 0.2

    # 無法再忍，直接 break 脫離迴圈
    if [ $Endurance -gt 23 ]; then
        echo -e "\n忍受不住，直接回家 ... "
        break
    fi

    # 唉！其實這行是為 continue 而 continue
    # 遇到這行，就會從迴圈的頭開始執行
    continue
    echo "這行是永遠不會被執行到的，因為上面有 continue "
done

# 離開迴圈給個訊息
echo "喔喔！你辭職了~你沒工作了，快找下一份吧！！" 






date +"%Y/%m/%d %H:%M"







grep "車" Day19TestData.txt | awk {'print $2" - "$3'} 




//現在我們想把所有的 Doraemon 取代變成 小叮噹，我可以用以下指令完成：

sed -i 's/Doraemon/小叮噹/g' Day20TestData.txt



head --line=10 Day22TestData.txt



tail --line=13 Day22TestData.txt




tail --line=10 sampleData.txt | head --line=5
# 或者寫成這樣也可以 (--line=n 和 –n 相同，n代表行數)
tail -10 sampleData.txt | head -5




?>